// 微信用户授权
export default Vue => {
  const wxInit = async function (flag, urlNew) {
    // 获取code
    let reg = new RegExp('(^|&)' + 'code' + '=([^&]*)(&|$)', 'i')
    let r = window.location.search.substr(1).match(reg)
    let code = ''
    if (r != null) {
      code = r[2]
    } else {
      code = null
    }
    // 是否是微信判断
    let isWx = Vue.prototype.$env.isWX
    // 如果是静默授权或者需要登录授权，并且是微信端，进行授权
    if ((code === null || flag === 1) && isWx) {
      let appid = ''
      // 获取微信appid
      let wxConfig = Vue.prototype.$cache.getCache(Vue.prototype.$cache.keys.wxConfig)
      // 获取到的微信配置为空，请求网络，获取微信配置
      if (wxConfig === null || wxConfig === undefined || wxConfig === {} || wxConfig === 'null' || wxConfig === 'undefined') {
        // 获取微信配置
        wxConfig = await Vue.prototype.$ajax.get('/getWxConfig.json')
        // 保存数据
        if (wxConfig) {
          Vue.prototype.$cache.setCache(Vue.prototype.$cache.keys.wxConfig, wxConfig)
        }
      } else {
        wxConfig = JSON.parse(wxConfig)
      }

      appid = wxConfig.appid

      // 设置地址，为了防止第二次授权的时候跳转到上一个页面（要调到授权前的页面），保存授权前的地址
      let redurect = ''
      if (flag === 0) {
        redurect = window.location.href.split('#')[0]
        // redurect = window.location.href
        redurect = encodeURIComponent(redurect)
        Vue.prototype.$cache.setCache('address', redurect)
      } else if (flag === 1) {
        // 如果是新的地址，赋值，否则获取本地的地址
        if (urlNew) {
          redurect = encodeURIComponent(urlNew)
        } else {
          redurect = Vue.prototype.$cache.getCache('address')
        }
      }
      // Vue.prototype.$coded = redurect
      let type = ''
      if (flag === 0) {
        // 静默授权
        type = 'snsapi_base'
      } else if (flag === 1) {
        // 用户同意后登陆授权
        type = 'snsapi_userinfo'
      }
      let url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redurect}&response_type=code&scope=${type}&state=1#wechat_redirect`
      window.location.href = url
    }
  }
  Vue.prototype.$wxInit = wxInit
}
